summaryrefslogtreecommitdiff
path: root/src/number.h
blob: 7d65096140973c2a051ab4a581f8233c7b692496 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#ifndef NUMBER_H
#define NUMBER_H

#include <bu/string.h>
#include "packedintarray.h"

class Number
{
public:
    Number( int iOrd=0 );
    Number( const Bu::String &sData, int iOrd=0 );
    virtual ~Number();

    Number &operator=( const Bu::String &sNum );
    
    Number operator+( const Number &rhs ) const;
    Number operator-( const Number &rhs ) const;
    Number operator*( const Number &rhs ) const;
    Number operator/( const Number &rhs ) const;
    Number operator-() const;

    bool operator==( const Number &rhs ) const;
    bool operator!=( const Number &rhs ) const;
    bool operator>( const Number &rhs ) const;
    bool operator<( const Number &rhs ) const;
    bool operator>=( const Number &rhs ) const;
    bool operator<=( const Number &rhs ) const;

    void set( const Bu::String &sNum );

    operator Bu::String() const
    {
        return aInt.toString();
    }

    Bu::String toString() const;

    int digit( int iOrder ) const;

private:
    Number add( const Number &rhs, bool bSub ) const;

private:
    int iOrd;
    bool bPositive;
    PackedIntArray aInt;
};

#endif